package com.example.mynotification;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.widget.Button;

/**
 * 主界面
 * @author lijiguo
 */
public class MainActivity extends AppCompatActivity {

    /**
     * 定义通知管理器
     */
    private NotificationManager notificationManager;

    /**
     * 定义通知对象
     */
    private Notification notification;

    private static final int notificationId = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取系统通知服务
        notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        // 定义 channelId
        String channelId = "sdecl";

        // NotificationChannel 通知渠道，Android 8.0引入
        // 允许为要显示的每种通知类型创建用户可自定义的渠道
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            // 参数1：channelId
            // 参数2：name 通知内容
            // 参数3：importance 通知重要程度
            NotificationChannel channel = new NotificationChannel(channelId, "测试通知", NotificationManager.IMPORTANCE_HIGH);
            notificationManager.createNotificationChannel(channel);
        }

        // 创建 Intent对象
        Intent notificationIntent = new Intent(this, NotificationActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_IMMUTABLE);

        // 获取通知对象
        notification = new NotificationCompat.Builder(this, channelId)
                .setContentTitle("官方通知") // 设置标题
                .setContentText("世界那么大，想去走走吗？") // 设置文本内容
                .setSmallIcon(R.drawable.baseline_notifications_24) // 设置小图标
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.dog)) // 设置通知大图标
                .setColor(Color.parseColor("#00ff00")) // 设置小图标的颜色
                .setContentIntent(pendingIntent) // 设置点击通知后要跳转的意图
//                .setAutoCancel(true) // 设置点击通知后自动消除通知
//                .setWhen() // 设置通知被创建的时间
                .build();

        // 获取按钮元素
        Button sendBtn = findViewById(R.id.send_btn);
        Button cancelBtn = findViewById(R.id.cancel_btn);

        // 发送通知按钮监听
        sendBtn.setOnClickListener(v -> {
            notificationManager.notify(notificationId, notification);
        });

        // 取消发送通知按钮监听
        cancelBtn.setOnClickListener(v -> {
            // 关闭通知
            notificationManager.cancel(notificationId);
        });
    }
}